package com.mall.service.impl;

import com.mall.dao.IUserDao;
import com.mall.dao.IUserRoleDao;
import com.mall.domain.Page;
import com.mall.domain.User;
import com.mall.service.IUserService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * 用户的业务层接口实现类
 * @author : liangY
 * @date : 2020-12-25 19:46
 */
@Service("userService")
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;
    @Autowired
    private IUserRoleDao userRoleDao;

    /**
     * 验证登录
     * @param loginUser
     * @return
     */
    @Override
    public User login(User loginUser){
        return userDao.login(loginUser);
    }

    /**
     * 查询所有用户
     * @param page 分页实体类
     * @return
     */
    @Override
    public List<User> findAll(@Param("page") Page page){
        //判断是否为模糊查询
        if(page.getQuery() == null){
            page.setQuery("%");
        } else {
            page.setQuery("%" + page.getQuery() + "%");
        }
        //设置分页查询开始值
        page.setNum((page.getNum() - 1) * page.getSize());
        return userDao.findAll(page);
    }

    /**
     * 查询所有用户数量
     * @return
     */
    @Override
    public Integer findTotal(){
        return userDao.findTotal();
    }

    /**
     * 更新用户
     * @param user 会员实体类
     * @return
     */
    @Override
    public Integer update(User user){
        user.setUpdated(new Date());
        return userDao.update(user);
    }

    /**
     * 更新用户
     * @param user 会员实体类
     * @return
     */
    @Override
    public Integer update2(User user){
        user.setUpdated(new Date());
        return userDao.update2(user);
    }

    /**
     * 添加用户
     * @param user 用户实体类
     * @return
     */
    @Override
    public Integer add(User user){
        user.setStatus(true);
        user.setCreated(new Date());
        userDao.add(user);
        return userDao.addRole(user.getId());
    }

    /**
     * 删除用户
     * @param id 用户编号
     * @return
     */
    @Override
    public Integer del(Integer id){
        return userDao.del(id);
    }

    /**
     * 更新用户角色
     * @param user_id
     * @param role_id
     * @return
     */
    @Override
    public Integer updateRole(Integer user_id,Integer role_id){
        return userRoleDao.updateRole(user_id,role_id);
    }
}
